package com.youlu.campus.web.sign.service;

import com.youlu.campus.base.base.UserInfo;
import com.youlu.campus.web.sign.dto.*;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 打卡计划接口
 * @author zgz
 * @date 2020/11/18 16:20
 */
public interface SignPlanService {

    /**
     * 获取打卡详情
     * @param signPlanId
     * @return
     */
    SignPlanDetailResponse getSignPlanDetail(String signPlanId);

    /**
     * 获取所有打卡项目列表
     * @return
     */
    List<SignPlanResponse> getAllSignPlan();

    /**
     * 获取项目参与人列表
     * @return
     */
    Page<UserInfo> getSignPlanJoinPage(SignPlanJoinPageRequest request);

    /**
     * 获取最新打卡列表
     * @return
     */
    List<UserInfo> getSignUserList(String signPlanId);

    /**
     * 获取补卡明细列表
     * @return
     */
    List<SignPatchListResponse> getSignPatchList(SignPatchListRequest request);

    /**
     * 参与打卡计划
     * @param signPlanId
     * @return
     */
    Integer joinSignPlan(String signPlanId);

    /**
     * 打卡
     * @param request
     * @return
     */
    SignResponse sign(SignPlanRequest request);

    /**
     * 获取所有参与计划打卡进度
     * @return
     */
    List<SignProgressResponse> getSignProgress();

    /**
     * 获取打卡列表
     * @param request
     * @return
     */
    Page<SignPageResponse> getSignPageList(SignPageRequest request);

    /**
     * 获取项目的打卡记录
     * @param request
     * @return
     */
    Page<SignPageResponse> getSignRecordList(SignPageRequest request);


    /**
     * 获取打卡内容详情
     * @param id
     * @return
     */
    SignPageResponse getSignDetail(String id);


    /**
     * 计算连续打卡
     * @param userId
     * @return
     */
    Long getSignSeriesCount(String userId, String groupId);

    /**
     * 分享统计
     * @param id
     * @return
     */
    Integer signDailyShare(String id);

    /**
     * 获取我的项目统计
     * @return
     */
    SignPlanCountResponse getSignPlanCount(String signPlanId);
}
